package top.shiyiri.comclass;

import org.junit.Test;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;

/**
 * @author Aunean
 * @date 2022/1/3
 */
/*
其他常用类的使用
1.System
2.Math
3.BigInteger、BigDecimal
 */
public class OtherClassTest {

    @Test
    public void test1() {
        String javaVersion = System.getProperty("java.version");
        System.out.println("java的version:" + javaVersion);
        String javaHome = System.getProperty("java.home");
        System.out.println("java的home:" + javaHome);
        String osName = System.getProperty("os.name");
        System.out.println("os的name:" + osName);
        String osVersion = System.getProperty("os.version");
        System.out.println("os的version:" + osVersion);
        String userName = System.getProperty("user.name");
        System.out.println("user的name:" + userName);
        String userHome = System.getProperty("user.home");
        System.out.println("user的home:" + userHome);
        String userDir = System.getProperty("user.dir");
        System.out.println("user的dir:" + userDir);
    }

    @Test
    public void test2() {
        //Math 类中包含 E 和 PI 两个静态常量，正如它们名字所暗示的，
        //它们的值分别等于 e（自然对数）和 π（圆周率）。
        System.out.println("E 常量的值：" + Math.E);
        System.out.println("PI 常量的值：" + Math.PI);

        //abs()返回绝对值
        System.out.println(Math.abs(23));
        //max()：返回较大的数
        System.out.println(Math.max(12, 23));
        //max()：返回较小的数
        System.out.println(Math.min(12, 23));
        //将参数加上 1/2 后返回与参数最近的整数，强制转换为长整型
        System.out.println(Math.round(44.6));//45
        //返回以 3 为底数，以 4 为指数的幂值
        System.out.println(Math.pow(3, 4));
        //sqrt()：返回平方根
        System.out.println(Math.sqrt(16));
        //cbrt()：返回立方根
        System.out.println(Math.cbrt(125));
    }

    @Test
    public void test3() {
        //java.math包的BigInteger可以表示不可变的任意精度的整数
        BigInteger bi = new BigInteger("12433241123");
        BigDecimal bd = new BigDecimal("12435.351");
        BigDecimal bd2 = new BigDecimal("11");
        System.out.println(bi);
        // System.out.println(bd.divide(bd2));
        System.out.println(bd.divide(bd2, BigDecimal.ROUND_HALF_UP));
        System.out.println(bd.divide(bd2, 2, BigDecimal.ROUND_HALF_UP));

        BigDecimal bigDecimal = new BigDecimal("1232423.23472934273");
        BigDecimal decimal = bigDecimal.setScale(1, BigDecimal.ROUND_HALF_UP);//保留一位小数
        System.out.println(decimal);

        //保留两位小数
        DecimalFormat decimalFormat = new DecimalFormat("#.00");
        String format = decimalFormat.format(234293742.234729372);
        System.out.println(format);

    }
}
